A storage controller manages physical disk drives and presents them to the computer as logical units. Application code running on a storage controller may access many data structures that are protected by locks to synchronize access and update to the structures. Some of these locks may become a bottleneck for certain workloads, leading to a limit in performance or degradation in performance when host computers access the storage controller.
Some existing lock profiling tools include a lock trace tool in an operating system These tools provide very detailed information on lock usage by tracing each time a lock is attempted to be acquired, taken, and released. With the increase in Central Processing Units (CPUs) in a CPU complex, this approach consumes a very large amount of memory and disk space for the lock traces. Due to this, the tracing run-time window has to be extremely small (i.e., <1 sec), and the processing of the trace file may take hours before results are available. The tracing may also slow down execution of the code, potentially causing different behavior when lock tracing is on versus off.